

const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');

if (fs.existsSync('build')) {
  fs.rmdirSync('build', { recursive: true }); // 使用 recursive 删除非空目录
}


execSync('tsc')

function getFiles(dir, pattern) {
  let results = [];
  
  // 读取目录内容
  const list = fs.readdirSync(dir);
  
  list.forEach(file => {
    const filePath = path.join(dir, file);
    const stat = fs.statSync(filePath);
    
    // 如果是目录，则递归
    if (stat && stat.isDirectory()) {
      results = results.concat(getFiles(filePath, pattern));
    } else {
      // 如果是文件并且匹配模式，添加到结果数组
      if (pattern.test(filePath)) {
        results.push(filePath);
      }
    }
  });

  return results;
}

// 获取所有符合 src/**/*.hbs 模式的文件
const files = getFiles('src', /\.hbs$/);

files?.forEach(file => {
  const outputFile = path.join('dist', path.relative('src', file));
  const outputDir = path.dirname(outputFile);

  // 确保输出目录存在
  if (!fs.existsSync(outputDir)) {
    fs.mkdirSync(outputDir, { recursive: true });
  }

  // 复制文件
  fs.copyFileSync(file, outputFile);
});

execSync('npm pack')


fs.mkdirSync('build');

const tgzFiles = fs.readdirSync('.').filter(file => file.endsWith('.tgz'));
tgzFiles.forEach(file => {
  fs.renameSync(file, `build/${file}`);
});